Recently, expert systems have come into use in the management and operation of large computer and other systems. Such expert systems typically rely upon a plurality of rules which are applied to make decisions about the operation of the system intended to be governed by the rules.
One problem with such systems is that they are typically application specific, or, if not totally application specific, are intertwined with the particular application so much that portability and/or modification is problematic. Thus, while an expert system can be written to govern a particular set of circumstances, any time a new problem arises which an operator desires to control via the expert system, the system must be substantially modified and often totally rewritten in order to be ported to a new application. Even slight modifications to the existing application often require substantial reworking of the entire expert system.
One prior art reference which is directed to rules organized in an expert system hierarchy is U.S. Pat. No. 5,619,621 to Puckett. The '621 patent includes a plurality of rules which are broken down into sets and subsets and sub-subsets, and also provides a technique for executing the rules in an appropriate order. The rules are intended, in the main exemplary embodiment, to diagnose faults and other problems in an automated data storage system. The hierarchial set of rules is organized to correspond with a hierarchy of potential problems within this system. Thus, the highest level of rules in the hierarchy determines which of a plurality of high level data storage modules have malfunctioned. If so, the next level of rules determines what particular sub-portion of the module caused the malfunction. Each level in the hierarchy operates upon facts returned by a rule executed at the next higher level of the hierarchy.
The arrangement of the rules in such a manner allows for efficient application of the rules to various different problems which may arise with the system under consideration. The rules however, can only operate upon specified objects, namely, a database record in a particular format. Thus, if the structure of the database record is changed, or the knowledge system is to be applied in a totally different application, the whole system must be substantially rewritten.
Additionally, the rules at each level of the hierarchy are not restricted at all. Specifically, the rules operate on all types of data returned from other rules, and cause various activities to take place in response to such rules. Accordingly, minor changes in the databases or the system require that most of the software implementing the system be rewritten.
Moreover, in the '621 patent, no attempt has been made to provide for portable expert systems which are usable across a variety of fields of endeavor. Additionally, in certain applications, the data upon which the rules will operate will not actually exist until after such rules are already coded and compiled. Thus, it would be difficult to write a set of rules which apply to data items that have not yet in fact been created. The teaching of the '621 patent provides no solution to this problem.
Additionally, it is always desirable for any rule based expert system to learn from experience as the system operates. Ideally, the system should learn from as many different sources as possible. The '621 patent provides a single and permanent rule base which does not change or update itself.
Another issue not addressed by the '621 patent relates to the formation of the rules themselves. Specifically, there are no safeguards built into the rule set to ensure the proper hierarchical structure of the rule set is preserved.
Recently, object orientated programming has become a preferred technique for implementing systems. In object oriented programming, objects are passed to different software routines, and the software operates upon the object.
Objects, for purposes of explanation herein, are anything that have a set of attributes and to which rules can be applied. For example, a database query is an object. A file is an object. Objects are organized into domains, with objects having common attributes, regardless of the values of such attributes, being classified into a common domain. Objects in a domain may have numerous attributes which differ, as long as they all have the common subset of attributes required to meet the definition of the domain. Each domain of objects may have subdomains, and each subdomain may have further subdomains.
There are no known rule based systems for easily operating on objects of different types and which may be easily ported to other applications. Additionally, although object oriented systems can provide a technique for each object to identify itself as a particular type of object, there are no known rule based systems that take advantage of this fact.